from enum import Enum
from typing import Optional
from dataclasses import dataclass

# MySQL字段类型信息
@dataclass
class MySQLTypeInfo:
    name: str                    # 类型名称(如VARCHAR、INT等)
    length: Optional[int] = None  # 类型长度(如VARCHAR(50)的50)
    precision: Optional[int] = None  # 精度(如DECIMAL(10,2)的10)
    scale: Optional[int] = None  # 小数位数(如DECIMAL(10,2)的2)
    display_width: Optional[int] = None  # 显示宽度(如INT(11)的11,MySQL 8.0已废弃)

# 妙码基础类型枚举
class MiaomaType(Enum):
    # 数值类型
    MIAOMA_BASE_INTEGER = 'MIAOMA_BASE_INTEGER'     # 整数
    MIAOMA_BASE_BIGINT = 'MIAOMA_BASE_BIGINT'      # 大整数
    MIAOMA_BASE_DECIMAL = 'MIAOMA_BASE_DECIMAL'    # 精确数值
    MIAOMA_BASE_FLOAT = 'MIAOMA_BASE_FLOAT'       # 浮点数
    MIAOMA_BASE_STRING = 'MIAOMA_BASE_STRING'     # 普通文本
    MIAOMA_BASE_TEXT = 'MIAOMA_BASE_TEXT'         # 长文本
    MIAOMA_BASE_BINARY = 'MIAOMA_BASE_BINARY'     # 二进制数据
    MIAOMA_BASE_DATE = 'MIAOMA_BASE_DATE'         # 日期
    MIAOMA_BASE_DATETIME = 'MIAOMA_BASE_DATETIME' # 日期时间
    MIAOMA_BASE_TIMESTAMP = 'MIAOMA_BASE_TIMESTAMP' # 时间戳
    MIAOMA_BASE_BOOLEAN = 'MIAOMA_BASE_BOOLEAN'   # 布尔值
    MIAOMA_BASE_JSON = 'MIAOMA_BASE_JSON'         # JSON数据

    # 扩展类型
    MIAOMA_EXTENDED_EMAIL = 'MIAOMA_EXTENDED_EMAIL'  # 邮箱类型
    MIAOMA_EXTENDED_COLOR_RGB = 'MIAOMA_EXTENDED_COLOR_RGB'  # 颜色类型 RGB
